#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
//void reverse(int* nums, int begin, int end)
//{
//    while (begin < end)
//    {
//        int tmp = nums[begin];
//        nums[begin] = nums[end];
//        nums[end] = tmp;
//        begin++;
//        end--;
//    }
//}
//void rotate(int* nums, int numsSize, int k) {
//    if (k > numsSize)
//    {
//        k %= numsSize;
//    }
//    reverse(nums, 0, numsSize - 1);
//    reverse(nums, 0, k - 1);
//    reverse(nums, k, numsSize - 1);
//}
//int main()
//{
//    int k = 2;
//    int arr[7] = { 1,2,3,4,5,6,7 };
//    int sz = sizeof(arr) / sizeof(arr[0]);
//    rotate(arr, sz, k);
//    return 0;
//}

void rotate(int* nums, int numsSize, int k) {
    if (k > numsSize)
    {
        k %= numsSize;
    }
    int* tmp = (int*)malloc(sizeof(int) * numsSize);
    memcpy(tmp, nums + numsSize-k , sizeof(int) * k);

    memcpy(tmp + k, nums, sizeof(int) * (numsSize - k));

    memcpy(nums, tmp, sizeof(int) * numsSize);
    free(tmp);
    tmp = NULL;
}
int main()
{
    int k = 2;
    int arr[7] = { 1,2,3,4,5,6,7 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    rotate(arr, sz, k);
    for (int i = 0; i < sz; i++)
    {
        printf("%d", arr[i]);
    }
    return 0;
}